package jp.yvn.game.shooting.element;

import jp.yvn.game.shooting.R;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.BitmapDrawable;

/**
 * 背景のオブジェクト
 * @author Yvn_pq
 */
public class BackGroundEntity {

    /** 画像のパス */
    private final int[] BMP_ID = {R.drawable.stage1, R.drawable.reimu2 };

    public final static int NOMAL_STG_1_BMP_ID = 0;

    /** アニメーションの速さ(数値が大きくなると速度が大きくなります) */
    public final static int ANIM_SPEED = 3;

    /** 一時停止 */
    private String mPauseText;

    private Paint mPaint;

    private int mPauseTextX;

    private int mPauseTextY;

    private final int PAUSE_TEXT_COLOR = 0xff000000;

    private final int PAUSE_BG_COLOR = 0xffc0ffc0;

    private final int TEXT_SIZE = 50;

    /** 画像 */
    private BitmapDrawable mBitmap = new BitmapDrawable();

    /** 画像幅、高さ */
    private int mWidth = 0;

    private int mHeight = 0;

    /** Context */
    private final Context mContext;

    /** レンダリングカウント */
    private int mRenderingCnt = 0;

    /**
     * コンストラクタ
     */
    public BackGroundEntity(Context context, int bmpId, int width, int height) {
        mContext = context;

        // 初期化
        setInit(context, bmpId, width, height);
    }

    /**
     * 初期座標設定します
     * @param width
     * @param height
     */
    private final void setInit(Context context, int bmpId, int width, int height) {

        // 画像読み込み
        Resources res = mContext.getResources();
        mPauseText = res.getString(R.string.pauseText);
        mBitmap = new BitmapDrawable(Bitmap.createBitmap(BitmapFactory.decodeResource(res, BMP_ID[bmpId])));

        // ペイント
        mPaint = new Paint();
        mPaint.setColor(PAUSE_TEXT_COLOR);
        mPaint.setTextSize(TEXT_SIZE);
        mPaint.setAntiAlias(true);
        mPaint.setDither(true);

        // 高さ幅設定
        mPauseTextX = (int) ((width / 2) - mPaint.measureText(mPauseText) / 2);
        mPauseTextY = height / 2;
        mWidth = width;
        mHeight = height;
    }

    /**
     * 描画します
     * @param canvas
     */
    public void draw(Canvas canvas) {
        if (mHeight < mRenderingCnt) {
            mRenderingCnt = 0;
        }
        mBitmap.setBounds(0, +mRenderingCnt, mWidth, mHeight + mRenderingCnt);
        mBitmap.draw(canvas);
        mBitmap.setBounds(0, mRenderingCnt - mHeight, mWidth, mRenderingCnt);
        mBitmap.draw(canvas);
        mRenderingCnt += ANIM_SPEED;
    }

    /**
     * 一時停止中画面を描画します
     * @param canvas
     */
    public void drawPause(Canvas canvas) {
        canvas.drawColor(PAUSE_BG_COLOR);
        canvas.drawText(mPauseText, mPauseTextX, mPauseTextY, mPaint);
    }

    /**
     * 終了処理を行います
     */
    public void destroy() {

    }
}
